/* 
  输入框绑定 值改变事件 input事件
    1 获取到输入框的值
    2 合法性判断
    3 检验通过 把输入框的值 发送到后台
    4 返回的数据打印到页面中

  防抖（防止抖动） 定时器  节流
  0 防抖 一般 输入框中 防止重复输入 重复发起请求
  1 节流 一般用在页面上拉和下拉
    定义全局的定时器id
*/

// 引入 用来发送请求的方法
import { request } from "../../request/index"
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    goods: [],
    // 取消按钮 是否显示
    isFocus: false,
    inpValue: ""
  },
  TimeId: -1,

  // 输入框的值改变 就会触发的事件
  handleInput(e){
    // 获取输入框的值
    const {value} = e.detail;
    // 检测合法性
    if(!value.trim(value)){
      this.setData({
        goods: [],
        isFocus: false
      })
      return;
    }
    this.setData({
      isFocus: true
    })
    // 准备发送请求获取数据 
    clearTimeout(this.TimeId);
    this.TimeId = setTimeout(()=>{
      this.qsearch(value);
    }, 1000);
  },

  // 发送请求获取搜索建议 数据
  async qsearch(query){
    const res = await request({url:"/goods/qsearch", data:{query}});
    this.setData({
      goods: res
    })
  },

  // 点击取消按钮
  handleCancel() {
    this.setData({
      inpValue: "",
      isFocus: false,
      goods: []
    })
  }

})